/**
 * @FilePath     : \simulations\include\agvNavigate\publicInterfaceInc\pid.h
 * @Description  : PID控制器类的接口定义，包括生成控制输出、清除控制和选择PID参数的方法。 
 *                 用于处理误差并生成控制信号。  
 * @Author       : xiujun.yang
 * @Version      : 1.0.0
 * @LastEditors  : error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git
 * @LastEditTime : 2024-12-19 16:25:22
 * @Copyright (c) 2024 by 临工智能信息科技有限公司, All Rights Reserved. 
**/
#pragma once
#include "struct_pid.h"
constexpr float IGNORE_CORRECT_VEL = 0.02f; //0.03以下速度忽略纠偏

//////////////////////////////////////////////////////////////////////////////
//   The interface of class "CPid".
class PidController 
{
public:
    // Default constructor
    PidController ();
    // Generate filter output
    float Generate(float input_error, float real_vel);
    void ClearControl();
    void SelectPid(bool low_speed, const PidFilter& filter);

    float previous_error1_;    // 上一次记录的误差
    float previous_error2_;    // 上上次记录的误差
    float control_output_;     // 控制量输出
    // float m_fErrorSum;      // 误差累计
    std::string name_;         // 命名标识
private:
    PidFilter current_filter_; // 当前pid参数
};

